﻿using System;
using System.Linq;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;


namespace Presentation.HotSite.WebPart.VWPInscritoNanoTeste1
{
    public partial class VWPInscritoNanoTeste1UserControl : UserControl
    {
        
        SPWeb myWeb = SPContext.Current.Web;
        private int _retrievedItemId;
        protected void Page_Load(object sender, EventArgs e)
        {



            if (!IsPostBack)
            {
                carregarCombo();
                //carregarComboOrgao();

                //lblAlertValidacao.Attributes.Add("display", "block");
                //Desabilitando a visualização
                /*txtAreaInteresseOutros.Visible = false;
                lblAreaInteresseOutros.Visible = false;*/
                /*txtCargo.Visible = false;
                lblCargo.Visible = false;*/
                /*ddlOrgao.Visible = false;
                lblOrgao.Visible = false;*/
                vsFormulario.Visible = false;


                //Desabilitando a validação 
        

         
                rfvName.IsValid = false;
                rfvCPF.IsValid = false;
                rfvEndereco.IsValid = false;
                rfvCidade.IsValid = false;
                rfvUF.IsValid = false;
                //rfvTelefone.IsValid = false;
                rfvCEP.IsValid = false;
                rfvEmail.IsValid = false;
                rfvOcupacao.IsValid = false;
                rfvInstituicao.IsValid = false;              
                rfvGuia.IsValid = false;
                rfvInovacao.IsValid = false;

            }

            else
            {
                vsFormulario.Visible = true;

            }
        }


        #region CARREGAR COMPONENTES.

        private void carregarCombo()
        {
            SPWeb site;
            SPList myList;

            site = SPContext.Current.Web;
            myList = site.Lists["uf"];

            ddlUF.Items.Add(new ListItem("Selecione o Estado", ""));

            foreach (SPListItem myItem in myList.Items)
            {
                ddlUF.Items.Add(new ListItem(myItem["Title"].ToString(), myItem.Title.ToString()));
            }

        }


        //private void carregarComboOrgao()
        //{
        //    SPWeb site;
        //    SPList myList;

        //    site = SPContext.Current.Web;
        //    myList = site.Lists["Órgão"];

        //    ddlOrgao.Items.Add(new ListItem("Selecione o Órgão", "-1"));

        //    foreach (SPListItem myItem in myList.Items)
        //    {
        //        ddlOrgao.Items.Add(new ListItem(myItem["Title"].ToString(), myItem.Title.ToString()));
        //    }

        //}

        #endregion



        # region Evento OnClick
        protected void btnEnviar_Click(object sender, EventArgs e)
        {

           
           try
            {
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    if (salvarItemFormularioCadastro())
                        CadastroComSucesso();
                });


            }
            
            
            catch 
            {
                lblCampoObrigatorio.Text = "Não foi possível cadastrá-lo ao Evento. Entre em contato com a administração.";

            }
             
             
        }

        #endregion




        /// <summary>
        /// Exibe a mensagem de erro utilizando uma função javascript.
        /// </summary>
        /// <param name="pMensagemErro"></param>
        /// 
      
        public void ExibirMensagemErro(string pMensagemErro)
        {
            if (string.IsNullOrEmpty(pMensagemErro))
            {
                //Response.Write("<script>alert('" + pMensagemErro + "')</script>");
                lblAlertValidacao.Text = pMensagemErro; // "O CPF nao é correto, por favor digite de novo.";
                lblAlertValidacao.Style.Add("display", "block");
            }
        }
       
       
        /// <summary>
        /// Exibe a mensagem de Sucesso de cadastro de Visitante.
        /// </summary>
        public void CadastroComSucesso()
        {
            Response.Write(@"<script>alert('Inscrição efetuada com sucesso!'); location.href='../default.aspx';</script>");
        }


        #region SALVAR DADOS

        private bool salvarItemFormularioCadastro()
        {
            SPList myList;
            SPListItem myItem;

            myList = myWeb.Lists[Data.HotSite.Properties.SharepointStrings.ListaInscritos]; //myWeb.Lists["Inscritos"];
            myItem = myList.Items.Add();

            if (isExisteCpf(txtCpf.Text))
            {
                lblErrorCPF.Text = "CPF/Passaporte já cadastrado no sistema!";
                lblErrorCPF.Style.Add("display", "block");
                return false;
            }
            else if (isExisteNome(txtNome.Text))
            {
                lblErrorNome.Text = "Nome já cadastrado no sistema!";
                lblErrorNome.Style.Add("display", "block");
                return false;
            }
            else
            {
                #region Itens Check List Ocupação

                var checkListAreaInteresse = cblAreaInteresse.Items.Cast<ListItem>().Where(i => i.Selected == true).Select(i => new { Valor = i.Value }).ToList();
                string areaInteresseListItens = "";

                foreach (var item in checkListAreaInteresse)
                {
                    areaInteresseListItens += item.Valor + ";";
                }
                areaInteresseListItens = areaInteresseListItens.TrimEnd(';');

                #endregion
                //Salvando o conteudo inserido no formulario na lista.

                myItem["Nome"] = txtNome.Text;
                myItem["CPF"] = txtCpf.Text.Trim();
                myItem["Endereco"] = txtEndereco.Text;
                myItem["Cidade"] = txtCidade.Text;
                myItem["UF"] = ddlUF.SelectedValue.ToString();
                myItem["Telefone"] = txtTelefone.Text;
                myItem["CEP"] = txtCep.Text;
                myItem["Email"] = txtEmail.Text;
                myItem["homePage"] = txtHomePage.Text;
                myItem["Ocupacao"] = rblOcupacao.Text;
                myItem["Cargo"] = txtCargo.Text;
                myItem["Instituicao"] = txtInstitucao.Text;
                myItem["especifiqueInteresse"] = txtAreaInteresseOutros.Text;
                //myItem["interesseFinanc"] = rblInteresseFinanc.Text;
                //myItem["Orgao"] = ddlOrgao.SelectedValue.ToString();
                myItem["Guia"] = rblGuia.Text;
                myItem["Portal"] = rblPortalInovacao.Text;
                
   

               
                SPFieldMultiChoiceValue itemValue = new SPFieldMultiChoiceValue();
                var choiceValues = areaInteresseListItens.Trim().Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                foreach (var item in choiceValues)
                {
                    itemValue.Add(item);
                }
                myItem["areaInteresse"] = itemValue;

                 
               

                myItem.Update();
                _retrievedItemId = myItem.ID;

            }

            return true;
        }



        private void RetornoComError(string tError)
        {
            if (tError.Equals("ExisteCPF"))
            {
                lblErrorCPF.Text = "Conteúdo já cadastrado no sistema!";
                lblErrorCPF.Style.Add("display", "block");
            }

            /*else if (tError.Equals("ErrorCPF"))
            {
                lblErrorCPF.Text = "Por favor, digite um CPF válido!.";
               lblErrorCPF.Style.Add("display", "block");
            }
            lblErrorCPF.Style.Add("display", "none");*/

            txtNome.Text = txtNome.Text.Equals("") ? "" : txtNome.Text;

            txtCpf.Text = txtCpf.Text.Equals("") ? "" : txtCpf.Text;
            txtEndereco.Text = txtEndereco.Text.Equals("") ? "" : txtEndereco.Text;
            txtCidade.Text = txtCidade.Text.Equals("") ? "" : txtCidade.Text;
            ddlUF.SelectedValue = ddlUF.SelectedValue;
            txtTelefone.Text = txtTelefone.Text.Equals("") ? "" : txtTelefone.Text;
            txtCep.Text = txtCep.Text.Equals("") ? "" : txtCep.Text;
            txtEmail.Text = txtEmail.Text.Equals("") ? "" : txtEmail.Text;
            txtInstitucao.Text = txtInstitucao.Text.Equals("") ? "" : txtInstitucao.Text;
            txtHomePage.Text = txtHomePage.Text.Equals("") ? "" : txtHomePage.Text;
            txtTelefone.Text = txtTelefone.Text.Equals("") ? "" : txtTelefone.Text;

        }

        /// <summary>
        /// Verifica a existencia de CPF dentro da lista.
        /// </summary>
        /// <param name="valorCPF">valor CPF prenchido no TextBox</param>
        /// <returns></returns>
        /// 

        

        //Método que verifica se existe o CPF cadastrado na Lista
        private bool isExisteCpf(string valorCPF)
        {
            Boolean existe = false;
            SPListItemCollection listItems = myWeb.Lists[Data.HotSite.Properties.SharepointStrings.ListaInscritos].Items; // myWeb.Lists["Inscritos"].Items;

            foreach (SPListItem oItem in listItems)
            {
                String cpfLista = oItem["CPF"] == null ? "" : oItem["CPF"].ToString();
                if (cpfLista.Equals(valorCPF))
                {
                    existe = true;
                    break;
                }
            }

            return existe;
        }

        private bool isExisteNome(string nome)
        {
            Boolean existe = false;
            SPListItemCollection listItems = myWeb.Lists[Data.HotSite.Properties.SharepointStrings.ListaInscritos].Items; // myWeb.Lists["Inscritos"].Items;

            foreach (SPListItem oItem in listItems)
            {
                String nomeLista = oItem["Nome"] == null ? "" : oItem["Nome"].ToString();
                if (nomeLista.Equals(nome))
                {
                    existe = true;
                    break;
                }
            }

            return existe;
        }

        protected void cblAreaInteresse_SelectedIndexChanged(object sender, EventArgs e)
        {


            
            #region Itens Check List Ocupação

            var checkListAreaInteresse = cblAreaInteresse.Items.Cast<ListItem>().Where(i => i.Selected == true).Select(i => new { Valor = i.Value }).ToList();
            string areaInteresseListItens = "";

            foreach (var item in checkListAreaInteresse)
            {
                areaInteresseListItens += item.Valor + ";";
            }
            areaInteresseListItens = areaInteresseListItens.TrimEnd(';');

            #endregion

            SPFieldMultiChoiceValue itemValue = new SPFieldMultiChoiceValue();
            var choiceValues = areaInteresseListItens.Trim().Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (var item in choiceValues)
            {
                itemValue.Add(item);
            }

            string valorObrigatorio = itemValue.ToString();
           

            if (((
                ((valorObrigatorio == ";#Metalmecânico;#Outros;#") || (valorObrigatorio == ";#Outros;#"))
                || (valorObrigatorio == ";#Saúde Humana;#Outros;#"))
                || (valorObrigatorio == ";#Saúde Animal;#Metalmecânico;#Outros;#"))
                || (valorObrigatorio == ";#Granfeno;#Metalmecânico;#Outros;#"))
                
            {
                txtAreaInteresseOutros.Visible = true;
                lblAreaInteresseOutros.Visible = true;
                txtAreaInteresseOutros.Focus();
            }
            else
            {
                txtAreaInteresseOutros.Visible = false;
                lblAreaInteresseOutros.Visible = false;
                cblAreaInteresse.Focus();
            }
            
        }

      


        protected void rblInteresseFinanc_SelectedIndexChanged(object sender, EventArgs e)
        {

           

          


        }

        protected void txtHomePage_TextChanged(object sender, EventArgs e)
        {

        }

        protected void txtTelefone_TextChanged(object sender, EventArgs e)
        {

        }

        protected void rblOcupacao_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void txtCidade_TextChanged(object sender, EventArgs e)
        {

        }

        protected void txtCep_TextChanged(object sender, EventArgs e)
        {

        }
        

            
            /*if (rblInteresseFinanc.Text == "Sim")
            {
                ddlOrgao.Visible = true;
                lblOrgao.Visible = true;
                rfvOrgao.IsValid = false;
                ddlOrgao.Focus();
            }
            else
            {
                ddlOrgao.Visible = false;
                lblOrgao.Visible = false;
                rblInteresseFinanc.Focus();
            }
        }

        /* Método que valida o CPF
         * 
        private Boolean isValidoCpf(String vrCPF)
        {
            string valor = vrCPF.Replace(".", "");
            valor = valor.Replace("-", "");

            if (valor.Length != 11)
                return false;

            bool igual = true;
            for (int i = 1; i < 11 && igual; i++)
                if (valor[i] != valor[0])
                    igual = false;

            if (igual || valor == "12345678909")
                return false;

            int[] numeros = new int[11];

            for (int i = 0; i < 11; i++)
                numeros[i] = int.Parse(
                  valor[i].ToString());

            int soma = 0;
            for (int i = 0; i < 9; i++)
                soma += (10 - i) * numeros[i];

            int resultado = soma % 11;

            if (resultado == 1 || resultado == 0)
            {
                if (numeros[9] != 0)
                    return false;
            }

            else if (numeros[9] != 11 - resultado)
                return false;

            soma = 0;
            for (int i = 0; i < 10; i++)
                soma += (11 - i) * numeros[i];

            resultado = soma % 11;

            if (resultado == 1 || resultado == 0)
            {
                if (numeros[10] != 0)
                    return false;
            }
            else
                if (numeros[10] != 11 - resultado)
                    return false;

            return true;
        }
        */
        #endregion

       
    
    }
}
